package 简单.数学;

/**
 * 给你一个长度为 5 的字符串 time ，表示一个电子时钟当前的时间，格式为 "hh:mm" 。
 * 最早 可能的时间是 "00:00" ，最晚 可能的时间是 "23:59" 。
 * 在字符串 time 中，被字符 ? 替换掉的数位是 未知的 ，被替换的数字可能是 0 到 9 中的任何一个。
 * 请你返回一个整数 answer ，将每一个 ? 都用 0 到 9 中一个数字替换后，可以得到的有效时间的数目。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/number-of-valid-clock-times
 */
public class 有效时间的数目_2437 {

    public static void main(String[] args) {

    }

    /**
     * 分类讨论+乘法原理
     */
    public int countTime(String time) {
        int pre = 1, after = 1;
        char zero = time.charAt(0);
        char one = time.charAt(1);
        if (zero == '?' && one == '?') {
            pre = 2 * 10 + 4;
        } else if (zero == '?' && one > '3') {
            pre = 2;
        } else if (zero == '?' && one <= '3') {
            pre = 3;
        } else if (zero == '2' && one == '?') {
            pre = 4;
        } else if (one == '?') {
            pre = 10;
        }

        if (time.charAt(3) == '?' && time.charAt(4) == '?') {
            after = 6 * 10;
        } else if (time.charAt(3) == '?') {
            after = 6;
        } else if (time.charAt(4) == '?') {
            after = 10;
        }
        return pre * after;
    }

}
